// Reflect 保持Object方法的默认行为

// 方法
Reflect.get(obj, key) //返回对象属性
Reflect.set(obj, key, val) //设置对象属性，返回布尔
Reflect.has(obj, key) //检查对象属性，返回布尔
Reflect.deleteProperty(obj, key) //删除对象属性，返回布尔
Reflect.defineProperty(obj, key, {}) //定义对象属性，返回布尔
Reflect.ownKeys(obj) //遍历对象属性，返回数组(Object.getOwnPropertyNames()+Object.getOwnPropertySymbols())
Reflect.getOwnPropertyDescriptor(obj, key) //返回对象属性描述，返回对象
Reflect.getPrototypeOf(obj) //返回对象原型，返回对象
Reflect.setPrototypeOf(obj, prototype) //设置对象原型，返回布尔
Reflect.isExtensible(obj) //返回对象是否可扩展，返回布尔
Reflect.preventExtensions(obj) //设置对象不可扩展，返回布尔
Reflect.apply() //绑定this后执行指定函数
Reflect.construct() //调用构造函数创建实例

// 设计目的
// 将Object属于语言内部的方法放到Reflect上
// 将某些Object方法报错情况改成返回false
// 让Object操作变成函数行为
// Proxy与Reflect相辅相成
